CSS 最佳实践 + 套路(二) -- height width
文档流
文档内元素的流动方向
- 内联元素 ==> 从左向右依次流动,若
width
不足,则换行 - 块级元素 ==> 从上到下依次流动,每个块级元素独占一行
脱离文档流
将会影响其祖先元素(块级元素)的 height
脱离文档流的三种方式:
position: fixed
相对于窗口定位position: absolute
相对于定位包含框定位(position: absolute; top: 100%;
)float:
浮动,可以利用.clearfix
类清除浮动
height 问题
div
(块级元素)==> 由其内部文档流元素的height
总和决定。span
(内联元素) ==>span
的height
决定于具体的字体(建议行高 + 设计字体的设计师决定)。
建议行高
字体都有一个建议行高,每种字体的建议行高是不同的。以下面的 span
为例:1
2<span style= 'font-family: 字体A; font-size: 20px; line-height: 40px;'>字体hug</span>
<span style= 'font-family: 字体B; font-size: 20px; line-height: 40px;'>字体hug</span>
- 两个
span
的字体不同,所以两个span
的height
就不相同。 font-size: 20px;
指的是英文字母h
的上部 距 英文字母g
的下部的距离为20px
,中文汉字会比20px
偏小一些。
最佳实践
将
line-height
设置的比font-size
大一些,那么行内元素的height
将会等于line-height
的值内联元素设置
width
和height
时,不要使用1
2
3
4display: block;
height:
line-height:
text-align: center;通过添加
padding
从而达到想要的width
和height
(添加line-height
明确height
),并且宽度(max-width)自适应1
2padding:
line-height:
套路
设置一个 height
为 40px
(近似)的 div
,其内部包含内敛元素 span
:
1 | <div style= 'line-height: 24px; border: 1px solid green; padding: 6px 0;'> |
两个 span
两端对齐方法
text-align: justify
==> 定义行内内容(例如文字)如何相对它的块父 元素对齐。text-align
并不控制块元素自己的对齐,只控制它的行内内容 的对齐。文字向两侧对齐(必须是多行文本)。1
2
3
4
5
6
7
8
9
10
11
12
13span{
display: block;
width: // 设置宽度,从而让两端对齐
line-height: //设置行高和高度,固定下来
height:
taxt-align: justify; //设置两端对齐
overflow: hidden;
}
span::after{ // 设置伪类,从而有第二行。
content: '';
display: inline-block;
width: 100%;
}
注意:可以将 span
设置为 display: inline-block
,之后在第一个 span
后面加上 <br>
文字省略溢出
单行文本省略溢出
1 | white-space: nowrap; |
多行文本省略溢出(css multi line text ellipsis)
1 | display: -webkit-box; |
实现一个 1:1 的 div
1 | border: 1px solid red; |
margin
合并
一个 div
标签中有一个子标签 div
,如果父标签有以下属性,则子标签中的 margin
(上下) 属性不会合并。
- border:
- padding:
- overflow: hidden;( 不推荐 )
相关知识点
文字和单词、单词和单词都是以基线对齐。
内联元素的
padding
、margin
和border
不会影响height
,但是会影响width